#ifndef PARTICLE_H
#define PARTICLE_H

#include "Vector3.h"
#include <vector>

// NO CAMBIAR EL TIPO DE ESTOS MEMBERS, NI SU POSICION
// esta alineado con el vertex shader!!!
struct BaseParticleData
{
	Vector3 position;
	float       size;
	float       color[4];
	float       rotation;
	float       nframe;
	float       dummy1;
	float       dummy2;
};

// particula base + datos que necesita la cpu para moverlas
struct Particle : public BaseParticleData
{
	// acc, ve, vi
	Vector3     direction;
	Vector3     acceleration;
	float		rotationSpeed;
	float		life;
	bool		isDead;
    
	void setRGBAColor( float r, float g, float b, float a )
	{
		color[ 0 ] = r;
		color[ 1 ] = g;
		color[ 2 ] = b;
		color[ 3 ] = a;
	}
	void setAlpha(float a)
	{
		color[ 3 ] = a;
	}
};
typedef std::vector< Particle > Particles;

#endif